import axios from "axios";

// 创建一个 axios 实例，以便更好地管理配置和拦截器
const instance = axios.create();

// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        // 从 cookie 中获取 Admin-Token
        const adminToken = document.cookie.split('; ').find(row => row.startsWith('Admin-Token='))?.split('=')[1];
        if (adminToken) {
            // 将 Admin-Token 设置到请求头中，假设后端期望的请求头名称为 'Authorization'（根据实际情况修改）
            config.headers.Authorization = `Bearer ${adminToken}`;
        }
        // 如果基础 URL 在不同环境下可能变化，这里可以根据环境变量来设置
        // 确保在构建过程中定义了 VUE_APP_BASE_API 环境变量
        const baseURL = typeof window !== 'undefined' ? window.VUE_APP_BASE_API : 'http://localhost/dev-api';
        config.baseURL = baseURL || 'http://localhost/dev-api';
        // 设置跨域请求时携带凭据（如果需要）
        config.withCredentials = true;
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

// 响应拦截器
instance.interceptors.response.use(
    (response) => {
        return response;
    },
    (error) => {
        if (error.response && error.response.status === 401) {
            // 处理 401 错误，例如跳转到登录页面
            console.error('401 错误：未授权访问，请重新登录');
            // 这里可以添加代码来清除无效的 Admin-Token cookie（如果需要）
            document.cookie = 'Admin-Token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
            // 根据应用的路由逻辑，跳转到登录页面
            window.location.href = '/login';
        }
        return Promise.reject(error);
    }
);

export default instance;